/* 

Name : prepare_data_decile.do 
Authors: Martin, Méjean, Parenti
Last update: January 10, 2019 
Aim : construct a dataset with info on the length of transactions, by product, destination and size decile 


*/ 

cd $firmpath

global firstyear 1996
global lastyear 2006
global time_constraint  //"drop if firstyear_panel!=firstyear_sample" in a robustness, we add a constraint to deal with left censoring 
global time_constraint2 "drop if firstyear_sample>2004" // drop right-censored seller-buyer relationships
global dim_decile $product 
global variant _baseline

use $dataset, clear
sort siren year month
by siren: g _=1 if _n==1
by siren: g __=1 if _n==_N
bys siren year month: egen firstdate_siren=mean(_)
bys siren year month: egen lastdate_siren=mean(__)
drop _ __

*** Drop buyers with a single transaction
bys buyer iso2 $product: egen _=count(export)
replace _=0 if _!=1
drop if _==1
drop _

*** we merge with French PPI to have exports in 2010 euros 

sort year month 
merge m:1 year month using $countrypath/ppi_france // monthly PPI data from INSEE 
keep if _m==3 
drop _m 
rename export export_n 
g export = export_n/ppi*100
label var export "real exports (deflated by PPI (2010=100))"

global dataset transac
save new_$dataset, replace

*** here we compute the length of transactions
construct_base_4decile new_$dataset base_4deciletransac$firstyear$lastyear "$time_constraint" "$time_constraint2" nomulti "$countrysample" // "$countrysample"


*** build our group variables on the final sample 
use base_4deciletransac$firstyear$lastyear, clear
sort iso2 id_bp id_bs id_bs_continuous
id_group _ "iso2 $product id_bp" // id_group does the same job as egen group (but work if we have millions of groups)
drop id_bp
rename _ id_bp
id_group _ "iso2 $product id_bs"
drop id_bs
rename _ id_bs
id_group _ "iso2 $product id_bs_continuous"
drop id_bs_continuous
rename _ id_bs_continuous
save base_4deciletransac$firstyear$lastyear, replace



*** compute size decile 
// this is the time-consuming part. computing deciles for such a big dataset takes hours


use base_4decile$firstyear$lastyear, clear // NEW 

egen p=group($product)
drop if export==0
g dur=num_transac // NEW number of transac rather than number of months 
g size=export  
collapse (mean) size dur  , by(id_bs_continuous $product iso2) 
g lsize=log(size)
egen _=mean(lsize), by($product)
g lsize_= size- _ 
gegen min=pctile(lsize_), by($dim_decile)  p(1) 
gegen max=pctile(lsize_), by($dim_decile)  p(99) 
gegen decile=xtile(lsize_) , by($dim_decile) nq(10)
drop if lsize_<min | lsize_>max // we truncate the first and tenth deciles to be fit with the theoretical framework (see appendix) 

save base_transac$firstyear$lastyear  // NEW 

use $correspath/corres_nc8$firstyear$lastyear, clear
keep if year==2002
rename nc8 nc8_2002
keep id_conc nc8
sort id_conc
save temp, replace
	
use base_transac$firstyear$lastyear // NEW 
sort id_conc
joinby id_conc using temp

tostring nc8_2002, replace 
replace nc8_2002="0"+ nc8_2002 if length(nc8_2002)==7 
g hs6_2002=substr(nc8_2002,1,6) 
egen hs=group(hs6_2002)
save base_4reg_transac, replace 

//NEW 
local 2 dur 
collapse (mean) size `2' (median) med_size=size med_`2'=`2', by($product iso2 decile hs hs6_2002) 
	replace `2'=log(`2')
	g fdecile=log(log(10 - decile) - log(9 - decile))
	replace fdecile=log(log(1.1)) if decile==1 // this is for size from pctile 0.01 to pctile 0.1 
	replace fdecile=log(log(10)) if decile==10 // this is for size from pctile 0.9 to pctile 0.99 
	replace `2'=`2' /0.9 if decile==1 |decile==10 // to account for the fact that we drop the top1% and bottom 1%
	egen p=group($product)
	egen c=group(iso2)
	reghdfe `2' fdecile size , a(rs_total=hs) 
	collapse (mean) rs* `2', by(hs6)
	save $rspath/rs_transac$firstyear$lastyear, replace 

erase temp.dta 

